This invention relates generally to data transfer in computer systems and specifically to the software emulation of a number of virtual channels by using a smaller number of physical channels.
Data transfer within and between computer systems has always been critical to the overall performance of the computer systems. Typically, transfer of data is via one or more buses having a fixed number of parallel hard-wired lines. Other forms of transmission are possible such as over a fiber optic cable, by radio transmission, etc. The physical medium, whether hard-wired lines, fiber optic cable or radio transmission, are referred to as the "physical channel" of the data transfer system.
In order to effectively use the physical channel to transmit data within and between computer systems, additional hardware and software are used to provide high level software processes using the physical channel with a simplified set of operations to transfer data. The hardware systems and software processes that make up the various components in a data transfer system are referred to as "layers."
A popular example of a well-defined communications architecture is the standard defined by the International Standards Organization (ISO). The ISO model is called the Open Systems Interconnection (OSI) model. The OSI standard consists of seven layers which define conceptual divisions in a communications architecture. As an example, the physical channel described above is called a "physical layer" in the OSI model. While a specific data transfer system may not have all seven layers present, each system must have at least the physical layer or physical channel. An example of a very simple system would be a physical layer that communicates with a software layer. The software layer provides a degree of transparency in that an a higher level software program, such as an operating system routine or an application program, that wants to use the physical channel does so by communicating with the software layer. The software layer provides predefined advanced communication commands, such as "send buffer," for the higher level program's use so that the higher level program does not have to be concerned with the details of operating the physical channel.
Software control of the physical channel by the software layer provides various other conveniences to higher level programs or processes. For example, the software control typically provides one or more buffers for receiving data from a sending process and subsequently transmitting the buffered data over the physical channel. By buffering the data the software control allows the sending process to indicate a large amount of data to be transmitted and allows the sending process to then proceed with other tasks. The buffered data is automatically transmitted over the physical channel when the physical channel becomes available. Many other advantages in using software control of the physical channel can be realized such as by implementing packet switched transmission techniques to break a larger transmission into multiple smaller transmissions. Packet switching allows data to be multiplexed over a single physical channel so that, for example, multiple messages can be broken up and their packets interleaved so that the transmission of the multiple messages occurs "concurrently." Multiplexing provides advantages at both the sending and receiving ends in terms of maximizing the use of limited computing resources.
Other forms of multiplexing, such as standard channel multiplexing are known and are described in references such as Computer Architecture: A Quantitative Approach, Hennessy & Patterson. However, these traditional multiplexing approaches require expensive and complex I/O controllers or other hardware.
Another advantage of software control of physical channels is that different messages can be assigned different priority levels so that when the physical channel is being used to send a message of a low priority the software controller can preempt the low priority message transmission to more quickly begin a higher priority message transmission. By definition, the quick sending and receiving of high priority messages is of vital importance to computer systems. For example, notification of power being lost in a computer system is an example of a high priority message that is of immediate interest to all processors so that the processors can act to preserve data.
One way to implement a priority scheme is to use multiple physical channels. Different physical channels can be assigned different priority levels so that the control software gives a higher priority physical channel more resources than a lower priority physical channel. While the existence of multiple physical channels provides advantages to a computer system there are also drawbacks. For example, the cost of hardware is increased. Also, the number of priority levels is limited by the number of physical channels.